package main

import (
	"fmt"
	"net/http"

	"github.com/gin-gonic/gin"
)

// gin的helloworld

func main(){
	// 1.创建路由
	// 默认使用了2个中间件Logger(), Recovery()
	r := gin.Default()
	// 也可以创建不带中间件的路由
	//r := gin.New()
	// 2.绑定路由规则,执行的函数
	// gin.Context,封装了request和response

	// api参数
	//r.GET("/user/:name/*action", func(c *gin.Context) {
	//	//
	//	name := c.Param("name")
	//	action := c.Param("action")
	//	c.String(http.StatusOK, name+"is "+action)
	//})

	//r.GET("/welcome", func(c *gin.Context) {
	//	// DefaultQuery第二个参数是默认值
	//	name := c.DefaultQuery("name", "jack")
	//	c.String(http.StatusOK, fmt.Sprintf("Hello %s",name))
	//})
/*
	r.POST("/form", func(c *gin.Context) {
		// 表单参数设置默认值
		typeStr := c.DefaultPostForm("type", "alert")
		// 接收其他的
		username := c.PostForm("username")
		password := c.PostForm("password")
		// 多选框
		hobbys := c.PostFormArray("hobby")
		c.String(http.StatusOK, fmt.Sprintf("type is %s, username is %s, password is %s, hobbys is %v",
			typeStr, username, password, hobbys))
	})
 */

/*
	// 上传单个文件
	r.POST("/upload", func(c *gin.Context) {
	// 表单取文件
		file , _ := c.FormFile("file")
		log.Println(file.Filename)
		// 传到项目根目录，名字就用本身的
		c.SaveUploadedFile(file, file.Filename)
		// 打印信息
		c.String(200,fmt.Sprintf("%s upload!",file.Filename))
	})
*/

	// 上传多个文件
	// 限制表单上传大小8MB，默认为32MB
	r.MaxMultipartMemory= 8 << 20
	r.POST("/upload", func(c *gin.Context) {
		form, err := c.MultipartForm()
		if err != nil{
			c.String(http.StatusBadRequest, fmt.Sprintf("get err %s",err.Error()))
		}
		// 获取所有图片
		files := form.File["files"]
		// 遍历所有图片
		for _,file := range files{
			// 逐个存
			if err := c.SaveUploadedFile(file, file.Filename); err != nil{
				c.String(http.StatusBadRequest, fmt.Sprintf("upload file failed %s",err.Error()))
				return
			}
			c.String(200, fmt.Sprintf("upload ok %d files",len(files)))
		}
	})

	// 3.监听端口
	r.Run(":8000")
	
}

func getting(c *gin.Context){

}